package com.hongdee.common.util;

import java.math.BigInteger;
import java.security.MessageDigest;

/**
 * 名  称:
 * 类  型: class
 * 描  述: 加解密相关工具类
 * 路  径:com.hongdee.common.util
 * 作  者:liuze
 * 日  期:2017/2/6 10:42
 */
public final class CrytpUtils {
    /*
    * */
    private CrytpUtils() {

    }

    /**
     * 16进制长度
     */

    private static final int HEX_LENGTH = 16;

    /**
     * @param str 待加密的字符串
     * @return String 加密后的字符串
     * @throws Exception 基类异常
     * @desc sha1加密算法
     */
    public static String sha1(String str) throws Exception {

        //指定sha1算法
        MessageDigest digest = MessageDigest.getInstance("SHA-1");
        digest.update(str.getBytes());
        //获取字节数组
        //        byte messageDigest[] = digest.digest();
        //        // Create Hex String
        //        StringBuffer hexString = new StringBuffer();
        //        // 字节数组转换为 十六进制 数
        //        for (int i = 0; i < messageDigest.length; i++) {
        //            String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
        //            if (shaHex.length() < 2) {
        //                hexString.append(0);
        //            }
        //            hexString.append(shaHex);
        //        }
        //        return hexString.toString().toUpperCase();
        return new BigInteger(1, digest.digest()).toString(HEX_LENGTH).toUpperCase();
    }

    /**
     * @param str 待加密的字符串
     * @return String 加密后的字符串
     * @throws Exception 基类异常
     * @desc MD5加密算法
     */
    public static String md5(String str) throws Exception {
        //指定sha1算法
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(str.getBytes());
        return new BigInteger(1, md.digest()).toString(HEX_LENGTH).toUpperCase();
    }


}
